package add__8_TreeSet;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;

public class CompareTest {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<Student>();
        students.add(new Student("张三","男",20));
        students.add(new Student("张三","男",20));
        students.add(new Student("李四","男",11));
        students.add(new Student("李四","男",66));
        students.add(new Student("王五","女",45));
        students.add(new Student("小六","女",21));
        System.out.println(students);
 
        System.out.println("********************写法一********************");
        Set<Student> sortSet1 = new TreeSet<Student>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o2.compareTo(o1);
            }
        });
        sortSet1.addAll(students);
        System.out.println(sortSet1.toString());
 
        System.out.println("********************写法二********************");
        Set<Student> sortSet2 = new TreeSet<Student>(((o1, o2) ->Integer.compare(o2.getAge(), o1.getAge())));
        sortSet2.addAll(students);
        System.out.println(sortSet2.toString());
 
        System.out.println("********************写法三********************");
        Set<Student> sortSet3 = new TreeSet<Student>(Comparator.reverseOrder());
        sortSet3.addAll(students);
        System.out.println(sortSet3.toString());
 
        System.out.println("********************写法四********************");
        //这里后续用有序的list处理即可，因为流中进行了倒序处理，收集成set后会重排
        List<Student> collect = students.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        System.out.println(collect);
    }
}